package br.com.sistemaGabinete.bean;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.sistemaGabinete.Controle.Fachada;
import br.com.sistemaGabinete.entity.Compromisso;
import br.com.sistemaGabinete.entity.Usuario;

/**
 * classe responsável por regra de negocio do compromisso de um parlamentar.
 * 
 * @author Josivam Rodrigues
 * @since 23/10/2014
 * @version 1.0
 */
@ManagedBean(name = "compromissoBean")
@SessionScoped
public class CompromissoBean extends ValidateBean {

	private static final long serialVersionUID = -3655918525217278829L;

	private Compromisso compromisso;

	private Fachada fachada;
	
	private Boolean mostraBotaoAlterar;
	
	private List<Compromisso> compromissos;
	
	/**
	 * Construtor da classe.
	 */
	public CompromissoBean() {
		compromisso = new Compromisso();
		fachada = new Fachada();
		mostraBotaoAlterar = Boolean.FALSE;
	}
	
	/**
	 * método responsável por incluir um novo compromisso na agenda do parlamentar
	 * 
	 * @author Josivam Rodrigues
	 * @since 23/10/2014
	 * @version 1.0
	 * @return redirenciona para tela de listagem da agenda do parlamentar.
	 */
	public String incluirCompromisso() {
		UsuarioBean usuarioBean = new UsuarioBean();
		
		compromisso.setUsuario(usuarioBean.obterUsuarioAtivo().getId());;
		
		fachada = new Fachada();
		fachada.incluirCompromisso(compromisso);
		limparCompromisso();
		addMessage(getMessageFromI18N("msg.compromisso.incluido.com.sucesso"));

		return "listarAgendaParlamentar";
	}

	
	public String alterarCompromisso() {
		fachada = new Fachada();
		fachada.alterarCompromisso(compromisso);
		limparCompromisso();
		addMessage(getMessageFromI18N("msg.compromisso.incluido.com.sucesso"));

		return "listarAgendaParlamentar";
	}
	
	
	
	public String preparaAlteracaoCompromisso(Compromisso compromissoSelecionado) {
		this.compromisso = compromissoSelecionado;
		mostraBotaoAlterar = Boolean.TRUE;
		return "incluirAgenda";
	}
	
	public String preparaInclusaoCompromisso() {
		this.compromisso = new Compromisso();
		mostraBotaoAlterar = Boolean.FALSE;
		return "incluirAgenda";
	}
	
	
	/**
	 * método responsável por limpar objeto de compromisso.
	 * 
	 * @author Josivam Rodrigues
	 * @since 28/06/2014
	 * @version 1.0
	 */
	private void limparCompromisso() {
		compromisso = null;
	}

	
	public String excluirCompromisso(Compromisso compromissoSelecionado) {
		fachada.excluirCompromisso(compromissoSelecionado);
		limparCompromisso();
		addMessage("Excluir" + getMessageFromI18N("msg.compromisso.incluido.com.sucesso"));
		return "listarAgendaParlamentar";
	}
	
	
	public Compromisso getCompromisso() {
		return compromisso;
	}

	public void setCompromisso(Compromisso compromisso) {
		this.compromisso = compromisso;
	}

	public List<Compromisso> getCompromissos() {
		//TODO passando o codigo do usuário logado
		Usuario usuario = new Usuario();
		usuario.setId(1L);
		
		compromissos = fachada.consultarCompromisso(usuario);
		return compromissos;
	}

	public void setCompromissos(List<Compromisso> compromissos) {
		this.compromissos = compromissos;
	}

	public Boolean getMostraBotaoAlterar() {
		return mostraBotaoAlterar;
	}

	public void setMostraBotaoAlterar(Boolean mostraBotaoAlterar) {
		this.mostraBotaoAlterar = mostraBotaoAlterar;
	}

	public Fachada getFachada() {
		return fachada;
	}

	public void setFachada(Fachada fachada) {
		this.fachada = fachada;
	}
	
}
